#include "ThreadPool.hpp"
#include "Task.hpp"
#include <unistd.h>
#include <memory>



void threadpool_test()
{
    // std::unique_ptr<ThreadPool<Task>> tp(new ThreadPool<Task>(3));
    // tp->run();

    ThreadPool<Task>::getInstance();
    ThreadPool<Task>::getInstance()->run();

    int x, y;
    char op;
    while (true)
    {
        usleep(50000);
        std::cout << "-------------------------------------" << std::endl;

        std::cout << "请输入左操作数#";
        std::cin >> x;

        flag:
        std::cout << "请输入操作符#";
        std::cin >> op;
        if(op != '+' && op != '-' && op != '*' && op != '/' && op != '%')
            goto flag;

        std::cout << "请输入右操作数#";
        std::cin >> y;

        Task t(x, y, op, mymath);
        // tp->Push(t);
        ThreadPool<Task>::getInstance()->Push(t);

        std::cout << "你刚刚输入的任务是 : " << t.task_to_string() << std::endl;
        std::cout << "-------------------------------------" << std::endl;
    }
}

int main()
{
    threadpool_test();
    return 0;
}




// void *run(void *args)
// {
//     std::string msg = static_cast<const char*>(args);
//     while(true)
//     {
//         std::cout << msg << std::endl;
//         sleep(1);
//     }
//     return nullptr;
// }

// void test()
// {
//     ThreadNs::Thread t1(run, (void*)"thread 1");
//     ThreadNs::Thread t2(run, (void*)"thread 2");

//     t1.start();
//     t2.start();

//     t1.join();
//     t2.join();
// }